package io.mft.runtime.function.combination.predictate;

import java.util.function.Predicate;

import io.mft.api.domain.ExecutingResource;
import io.mft.api.domain.Regulation;
import io.mft.commons.function.ExecuteReturn;
import io.mft.dev.base.BaseFunction;
import io.mft.plugin.PluginContext;

/**
 * 流程编排判别式节点功能
 * @说明：TODO
 * @类型名称：FlowPredicateFunction
 * @创建者: 胡常建  
 * @创建时间: 2021年9月17日 下午2:06:28
 * @修改者: 胡常建  
 * @修改时间: 2021年9月17日 下午2:06:28
 */
public abstract class FlowPredicateFunction extends BaseFunction implements Predicate<PluginContext<ExecutingResource<Regulation>>>{
	@Override
	public final ExecuteReturn doExecute(PluginContext<ExecutingResource<Regulation>> context) {
		int errorNo=context.getResponse().getErrorNo();
		if (errorNo==0) {
			if (test(context)) {
				return ExecuteReturn.builder().code(0).build();
			}else {
				return ExecuteReturn.builder().code(-1).build();
			}
		}else {
			return ExecuteReturn.builder().code(errorNo).message(context.getResponse().getErrorInfo()).build();
		}
	}
}
